home *** CD-ROM | disk | FTP | other *** search
/ 10,000 Great Games / 10,000 Great Games.iso / Product / 66 / data1.cab / Source_Files / Src / NewObject.cpp < prev    next >
C/C++ Source or Header  |  2000-01-16  |  2KB  |  76 lines

  1. #include "stdafx.h"
  2.  
  3. #include "NewObject.h"
  4.  
  5. static int new_object = 0, make_related = FALSE;
  6.  
  7. CNewObject::CNewObject(CWnd* pParent)
  8.     : CDialog(CNewObject::IDD, pParent)
  9. {
  10.     //{{AFX_DATA_INIT(CNewObject)
  11.     //}}AFX_DATA_INIT
  12. }
  13.  
  14. void CNewObject::DoDataExchange(CDataExchange* pDX)
  15. {
  16.     CDialog::DoDataExchange(pDX);
  17.     //{{AFX_DATA_MAP(CNewObject)
  18.     DDX_Control(pDX, IDC_NEWOBJECT_RELATING, m_Relating);
  19.     DDX_Control(pDX, IDC_NEWOBJECT_LIST, m_List);
  20.     //}}AFX_DATA_MAP
  21. }
  22.  
  23. BEGIN_MESSAGE_MAP(CNewObject, CDialog)
  24.     //{{AFX_MSG_MAP(CNewObject)
  25.     ON_WM_CREATE()
  26.     //}}AFX_MSG_MAP
  27. END_MESSAGE_MAP()
  28.  
  29. BOOL CNewObject::OnInitDialog() 
  30. {
  31.     CDialog::OnInitDialog();
  32.     
  33.     for (cProperties *p = props; p != 0; p = (cProperties *)p->next)
  34.         if (p->objtype != 0)
  35.         {
  36.             int i = m_List.AddString(construct("%s (%s)", p->name, p->type));
  37.             m_List.SetItemDataPtr(i, p);
  38.         }
  39.  
  40.     m_List.SetCurSel(new_object);
  41.     
  42.     m_Relating.SetCheck(make_related);
  43.  
  44.     return TRUE;
  45. }
  46.  
  47. void CNewObject::OnOK() 
  48. {
  49.     new_object = m_List.GetCurSel();
  50.     make_related = m_Relating.GetCheck();
  51.  
  52.     // Make object
  53.  
  54.     cProperties *p = (cProperties *)m_List.GetItemDataPtr(new_object);
  55.     cSurface *s = *p->objtype->surface;
  56.     cObjectTypes::make(GAME_DX / 2, s->start + GAME_DY / 2, p, make_related);
  57.  
  58.     // Create new editables
  59.  
  60.     cEditable::make_editables();
  61.  
  62.     // Make document dirty
  63.  
  64.     gamewindow->GetDocument()->SetModifiedFlag();
  65.  
  66.     // Make sure it is drawn
  67.  
  68.     s->all_dirty();    
  69.  
  70.     gamewindow->Invalidate();
  71.  
  72.     // Call base class
  73.  
  74.     CDialog::OnOK();
  75. }
  76.